﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Fibot.Module.K3Cloud.BASE.dto;

public class BaseSaveDto
{
    /// <summary>
    /// 需要更新的字段，数组类型，格式：[key1,key2,...] （非必录）
    /// 注（更新字段时Model数据包中必须设置内码，若更新单据体字段还需设置分录内码）
    /// </summary>
    public List<string> NeedUpDateFields { get; set; } = new List<string>();

    /// <summary>
    /// 需返回结果的字段集合，数组类型，格式：[key,entitykey.key,...]（非必录） 
    /// 注（返回单据体字段格式：entitykey.key）
    /// </summary>
    public List<string> NeedReturnFields { get; set; } = new List<string>();

    /// <summary>
    /// 是否删除已存在的分录，布尔类型，默认true（非必录）
    /// </summary>
    public bool IsDeleteEntry { get; set; } = true;

    /// <summary>
    /// 表单所在的子系统内码，字符串类型（非必录）
    /// </summary>
    public string SubSystemId { get; set; } = "";

    /// <summary>
    /// 是否验证所有的基础资料有效性，布尔类，默认false（非必录）
    /// </summary>
    public bool IsVerifyBaseDataField { get; set; } = false;

    /// <summary>
    /// 是否批量填充分录，默认true（非必录）
    /// </summary>
    public bool IsEntryBatchFill { get; set; } = true;

    /// <summary>
    /// 是否验证数据合法性标志，布尔类型，默认true（非必录）
    /// 注（设为false时不对数据合法性进行校验）
    /// </summary>
    public bool ValidateFlag { get; set; } = true;

    /// <summary>
    /// 是否用编码搜索基础资料，布尔类型，默认true（非必录）
    /// </summary>
    public bool NumberSearch { get; set; } = true;

    /// <summary>
    /// 是否自动调整JSON字段顺序，布尔类型，默认false（非必录）
    /// </summary>
    public bool IsAutoAdjustField { get; set; } = false;

    /// <summary>
    /// 交互标志集合，字符串类型，分号分隔，格式："flag1;flag2;..."（非必录） 
    /// 例如（允许负库存标识：STK_InvCheckResult）
    /// </summary>
    public string InterationFlags { get; set; } = "";

    /// <summary>
    /// 是否允许忽略交互，布尔类型，默认true（非必录）
    /// </summary>
    public string IgnoreInterationFlag { get; set; } = "true";

    /// <summary>
    /// 是否控制精度，为true时对金额、单价和数量字段进行精度验证，默认false（非必录）
    /// </summary>
    public bool IsControlPrecision { get; set; } = false;

    /// <summary>
    /// 校验Json数据包是否重复传入，一旦重复传入，接口调用失败，默认false（非必录）
    /// </summary>
    public bool ValidateRepeatJson { get; set; } = false;

    /// <summary>
    /// 表单数据包 json类型
    /// </summary>
    public object Model { get; set; }
}
